package com.healthy.util;

/**
 * @author ??????
 * @date 2020年6月12日
 * @description <p>判断权限的工具类</p>
 */
public class PowerUtil {
	// 十六进制，与运算
	/*
	 *  与运算，同则1，异则零，现在用7位做示范
	 *  +/- 0 0 1 0 0 0 1    // bin->int 1*2^4+1*2^0=17  // bin->hex 0x11
	 * &    0 0 1 0 0 0 0    // bin 16    // hex 0x10
	 * =    0 0 1 0 0 0 0    // bin 16    // hex 0x10
	 * 即（17&16==16）结果为true
	 * 7位我们可以做出7层权限，64、32、16、8、4、2、1，各层权限可互相组合或单独使用：
	 * 比如说权值等于24，那么他就有16和8的权限，根据数字转二进制在按照以上示例与运算，24&16==16，24&8==8
	 * 七层权限并不是限制，如果想做出更多权限，可以扩展最高位
	 * 七层权限转16进制：0x40、0x20、0x10、0x08、0x04、0x02、0x01
	 */
	public static final int x1 = 0x01;// 管理所有管理员账号
	public static final int x2 = 0x02;// 管理用户
	public static final int x4 = 0x04;// 文章发布、修改、删除
	public static final int x8 = 0x08;// 管理商城商品
	
	/*
	 * 判断权限
	 */
	public static boolean haveManageAdmin(int powerValue){
		return ( powerValue & x1 ) == 1;
	}
	public static boolean haveManageUser(int powerValue){
		return ( powerValue & x2 ) == 2;
	}
	public static boolean haveManageCharpter(int powerValue){
		return ( powerValue & x4 ) == 4;
	}
	public static boolean haveManageMerch(int powerValue){
		return ( powerValue & x8 ) == 8;
	}
	
}
